package lru;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @Description: LRU全称是Least Recently Used
 * @Project: testDemo
 * @Author: hjibo
 * @CreateDate: 2019/3/4 11:21
 * @ModificationHistory: （who whatTime doWhat）
 */
public class LRUDemo<K,V> extends LinkedHashMap<K,V> {

    // 容量
    private final int size;

    public LRUDemo(int size) {
        // true 表示让 linkedHashMap 按照访问顺序来进行排序，就把当前操作的元素放到链表的第一位
        super((int) Math.ceil(size / 0.75) + 1, 0.75f, true);
        this.size = size;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry eldest) {
        // 当 map中的数据量大于指定的缓存个数的时候，就自动删除最老的数据。
        return size() > size;
    }
}
